Advanced RAG

|

1. Dev summary

Project Summary of the projectRelated Pages
RAG + Chatbot
  • base model:
    • openai gpt-4
    • LLaMa 2 13B
  • Related Paper Review (LLaMa 2)
  • RAG
  • Chat history
  • Illustrated by the author


    2. Data

    2.1 RAG data 출처

    1. 대한민국 갈등 사례(갈등 - 원인 - 이해관계자 -해결) 검색 chat을 위한 대한민국 갈등 사례 보고서 및 논문 (한국 행정 연구원으로부터 데이터 수령)
    2. 대한민국 국방 관련 검색 chat을 위한 국방 보고서 및 논문 (한국 국방 연구원으로부터 데이터 수령)

    2.2 PDF data parsing

    • parsing 방식:
      Rule-base parsing

    • 사용 라이브러리 :
      langchain.document_loaders.PyPDFDirectoryLoader

    3. Model

    1. openai gpt-4-turbo
    2. LLaMa2 -> fine tuning model (fine-tuning log)
    3. Mistral -> fine tuning model (fine-tuning log)
    4. Solar -> fine tuning model (fine-tuning log)

    3.1 Embedding Model

    text-embedding-ada-002(chunk size=1000)

    4. Chat application programming interface (API)

    • gradio (LLM tuning 결과 개인 확인용 api)
    • Fastapi (협업 백엔드 개발자 선호에 맞춰 개발)
    • Flask (협업 백엔드 개발자 선호에 맞춰 개발)

    5. Naive-RAG 이외 적용 기술

    5.1 Pre-Retrieval

    1. binary vectorstore(document type)

    5.2 Enhanced indexing strategy

    1. binary vectorstore(document type)
      document type에 따라 2-3개의 vector db에 분류하여 저장

    2. metadata filtering을 위한 Hierarchical index retrieval
      chunk별 요약 결과 metadata로 저장

    3. hierarchical similarity search -> 3단계
      (1. query <-> document summary similarity search

      1. vectorstore내에서 1번에서 검색된 document를 기반으로 similarity search (속도 향상을 위한 filtering)
      2. retriever 정의 시 2번에서 검색된 document를 기반으로 similarity search)

    5.3 Retrieval

    1. diverse Prompts(query type)
      query type별로 다른 prompt 적용

    5.4 Post-Retrieval

    1. translate(en->ko)
      LLM 영어 답변 반환 시 번역
    2. similarity-based reordering

    6. Chat 관련 추가 기능

    • return source file
    • 좋아요 싫어요 버튼 추가
    • [답변 일시, 소요 시간, 질문, 답변, 사용자 ip] 저장 기능 추가
    • RAG 기반 질문-대답 챗 
      • Weaviate의 retrieval 결과를 받아 prompt와 함께 LLM에 입력 후 결과 반환
    • RAG 이후 LLM 답변 시 참조된 문서 요약(source 번호 입력) 
      • 질의응답 내용과 참조 문서 정보를 저장하여 참조 문서 번호 입력 시 해당 문서에 대한 요약 결과 반환
    • 문서 제목 입력 후 문서 요약 -문서 제목 입력 시 문서 요약 결과 반환
      • 문서 전체 길이에 따라 LLM 입력 횟수 증가+Json 형식 답변 반환
      • 표 출력을 위한 json 형식 반환
      • “표“, “json” 포함 질문 입력 시 json 형식 반환 prompt와 함께 LLM에 입력 후 결과 반환

    7. Problems and Solutions

    1. 속도 문제
      • LLM 추론 속도 문제: vllm 적용
      • similarity search 연산 속도 문제: 문서가 많아 시간이 생각보다 많이 소요되어 binary vectorstore, metadata filtering, hierarchical similarity search 적용
    2. query 유형에 따라 LLM 추론 품질이 상이한 문제
      • query 유형 분류를 통해 다른 prompt를 타도록 pipeline 구성
    3. LLM 영어 반환 문제
      • port-retrieval 과정으로 영어 답변 반환 시 번역 과정 추가
    4. LLM 답변 정확도 및 품질 저하 문제
      • similarity-based reordering을 통해 검색된 chunk 중 가장 관련 있는 문서를 더 많이 참조하도록 조정